說到區塊鏈就一定會提到錢包,而提到錢包就會提到Address(地址),區塊鏈上的地址是基於BIP32、BIP44、BIP84、BIP141而來,BIP全名Bitcoin Improvement Proposal,是指Bitcoin上面的提案,而這些是定義了HD Wallet(Hierarchical Deterministic Wallets)和後續發展,簡單的說就是可以透過一組助記詞Mnemonic來產生一組金鑰然後可以透過Derivation Path去產生近乎無限多個Derived Addresses地址,為什麼會需要這麼多個地址呢?
各位如果有使用過CEX(Centralized Exchange)的話應該就會發現在錢包中可以看到各個CEX有支援的鏈的Address,這些Address就是交易所透過一組註記詞所產生的Derived Addresses,這樣就可以透過Path來管理密鑰進行交易的操作,並不用像是個人使用MetaMask類型的錢包一樣,一個Address就需要使用一組註記詞。
這裡分享一個簡單的線上工具可以讓大家體驗一下剛剛提到的BIP以及註記詞所產生的Derived Addresses。
Mnemonic Code Converter
可以看到在Derivation Path中可以設定path m/Purpose'/Coin'/Account'/External/Internal
可以看到這邊產生了許多的Address和Public/Private key。
這邊分享一下小知識,一般CEX會有兩組註記詞,一組用來產生所有用戶的Address作為Deposit Adress,一組用來Withdraw,不知道大家有沒有這種疑問,為什麼我們明明Deposit Ethereum上的USDT到CEX,但在CEX wallet中卻可以Withdraw USDT via 交易所有支援的鏈像是ERC-20/TRC-20/Polygon/BEP-20等等的鏈發送出去,這是因為一般Deposit crypto到CEX地址中,CEX會將這些Crypto通通透過鏈上交易轉移到Withdraw address集中起來,將來你想要withdraw crypto到外部地址時,會從withdraw address發送交易,所以當你在CEX查看你withdraw的鏈上交易訊息時,會發現From的Address和自己Deposit的地址不一樣,例如我在MAX USDT的Address是
然後我將USDT透過TRC-20轉移到外部錢包,這個交易紀錄可以看到Owner address不是自己的Deposit的Address,這個是MAX在Tron上的withdraw address。
所以CEX會再有支援的鏈上都會放一定數量的crypto,才能夠讓使用者可以選擇不同的chain來withdraw。